<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 注意:
    // (1) 外层函数在执行过程中,调用内层函数
    // (2) 外层函数需要等待内层函数执行完毕后,才会继续向后执行
    // (3) 外层函数和内层函数都可以设置自己的返回值, 内层函数的返回值不会直接传递给外层

    // 递归(函数在执行过程中调用了自己)  

    // 特征: 先传递再回归

    // 注意:
    // 递归需要有跳出条件(临界值), 否则会形成死递归


    // RangeError:超过了最大调用堆栈大小  => 死递归
    // function fn(){
    //     console.log(111111);
    //     fn();
    // }
    // fn();

    // 类别死循环
    // var i = 10;
    // while(true){
    //     document.write(i +"<br>");
    //     if(i <= 1){
    //         break;  
    //     }
    //     i--;
    // }

    /* var i = 10;
    function fn() {
        console.log(i); // 10 9 8 ... 2 1 
        
        // if (i <= 1) {  // 满足特定条件之后停止递归
        //     return i;
        // } else {
        //     i--;
        //     fn();
        // }


        if (i <= 1) {  // 满足特定条件之后停止递归
            return i;
        } 
        i--;
        fn();
    }
    fn(); // 1  */


</script>

</html>